package com.yytek.nmp.mapper;

import java.util.List;
import com.yytek.nmp.domain.IotProjectInfo;
import com.yytek.nmp.vo.ProjectBindUserVo;
import com.yytek.system.api.domain.SysUser;
import org.apache.ibatis.annotations.Param;

/**
 * 项目Mapper接口
 * 
 * @author yytek-iot
 * @date 2022-07-05
 */
public interface IotProjectInfoMapper 
{
    /**
     * 查询项目
     * 
     * @param id 项目主键
     * @return 项目
     */
    public IotProjectInfo selectIotProjectInfoById(Long id);

    /**
     * 查询项目列表
     * 
     * @param iotProjectInfo 项目
     * @return 项目集合
     */
    public List<IotProjectInfo> selectIotProjectInfoList(IotProjectInfo iotProjectInfo);

    /**
     * 新增项目
     * 
     * @param iotProjectInfo 项目
     * @return 结果
     */
    public int insertIotProjectInfo(IotProjectInfo iotProjectInfo);

    /**
     * 修改项目
     * 
     * @param iotProjectInfo 项目
     * @return 结果
     */
    public int updateIotProjectInfo(IotProjectInfo iotProjectInfo);

    /**
     * 删除项目
     * 
     * @param id 项目主键
     * @return 结果
     */
    public int deleteIotProjectInfoById(Long id);

    /**
     * 批量删除项目
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteIotProjectInfoByIds(Long[] ids);

    /**
     * 根据项目名称查询项目
     * @param projectName
     * @return
     */
    List<IotProjectInfo> selectProjectByName(String projectName);

    /**
     * 查询授权项目列表
     * @param userId 用户id
     * @return
     */
    List<IotProjectInfo> selectAuthProjectInfoListByUserId(String userId);

    /**
     * 查询该项目下所有授权人员
     * @param id 项目id
     * @return
     */
    List<SysUser> getAuthUserListByProjectId(String id);

    /**
     * 通过名称查询自己项目
     * @param userId
     * @param name
     * @return
     */
    List<IotProjectInfo> selectProjectByUserIdAndName(@Param("userId")String userId,
                                                      @Param("name")String name);
}
